Some applications are graphics based, and may, using what is commonly termed virtual reality, give an illusion of 3D space by situating virtual objects on a virtual 3D grid. Using immersion equipment, users can interact with this virtual environment. Additionally or alternatively, the 3D space can be projected on to a substantially flat or 2D surface such as a computer visual display unit (VDU), so that virtual objects are viewed on substantially 2D computer screens, yet nevertheless, an illusion of solidity is maintained, and such virtual objects have, in addition to height and width, an apparent depth. These objects may move with respect to backgrounds or scenes, which may be substantially stationary, though often may be viewable from different angles, and if the viewing angle is changed, the whole scene is rotated in consequence. Alternatively, as with flight simulators for example, the background may constantly change in a dynamic manner.
As illustrated in FIG. 1, which shows schematically the inter-relationships between clients and server in networked computing environments, networked computing comprises a plurality of remote terminals or clients interacting with the same computer application, the bulk of which usually runs on a host computer known as the server. The clients and the server are interconnected via a network. The individual clients are often at a considerable distance from each other and from the host server.
Now the speed at which a computer application runs is a function of both the complexity of the software, and the capability of the hardware. In networked computing however, particularly with data-intensive, heavy applications, the speed at which applications run is often limited by the time required for necessary data to be transferred between the networked computers. The data transfer time is a function of the bandwidth of the data transfer lines, and of the volume of data that requires transporting. Clearly there is a desire to limit the quantity of data that is transported between the client and the server, and efficient programming and data compression techniques are used to facilitate this data limiting.
The Internet is a multiclient computing environment that potentially allows many users to interact with each other using the same application, enabling a large number of players to play the same adventure game for example. To facilitate multiplayer interaction in a 3D virtual graphic environment, in real-time, it is required that interactions by one user at one client, are transmitted to the server and to other clients fast enough that correct sequencing is maintained, thus preferentially the moves of one player appear instantaneously on the monitors of all other players. Increasing the running efficiency, and, in particular, achieving real-time updating of high-resolution 3D graphical displays to multiple users is a challenging aim.
Apart from games and the like, virtual reality has also been applied to various areas of human endeavor, replacing real world experimentation where, due to economic, safety and other considerations, it has been deemed preferable to use simulations rather than the real thing. Examples of this include anatomical simulations of the human body for pedagogic purposes in the training of doctors and surgeons, object design for manufacturing and virtual prototyping, guidance for installation and trouble-shooting for computer peripherals such as printers, and battle field simulation for training the military, such as flight simulators for training aircraft pilots, tank drivers and artillery personnel.
As computer programs have got more sophisticated, comprising larger quantities of code, structural programming has given way to Object Oriented Programming (OOP). The object oriented programming approach breaks down problems into groups of related parts that take into account both the code and the data related to each group. The groups are then organized into a hierarchical structure and translated into subgroups called objects. Virtual objects are logical entities that encapsulate both data and the code that manipulates that data.
Object oriented programming has been applied with success to virtual reality computer applications. A virtual object in a virtual reality environment can be programmed as a computing object in the sense of object oriented programming, thus the appearance or form of the object, its behavior or function, and its location data may be encapsulated together into a quasi-autonomous entity. Programming in this manner provides a modular construction that facilitates comprehension of complex programs, for updating and the like. It also avoids the problems associated with sharing files between different aspects of a program. In multiple-user, real-time networked applications however; the traditional object oriented programming approach has been found to be somewhat inadequate. By encapsulating the display and interaction characteristics of an object with those characteristics that describe function and behavior, the objects comprise large amounts of data. Transferring such large amounts of data between networked computers requires considerable resources in terms of bandwidth and/or transfer time.
Traditionally, in virtual reality, the placing of objects within a scene is accomplished by constructing the scene in 3D space on a Cartesian grid comprising orthogonal axes, or some other coordinate system appropriate for the specific application. A centroid is then defined for each object within the scene, and the centroid of each object is then plotted onto the coordinate system. When an object is moved, the centroid thereof is repositioned, and the object is redrawn at its new location. In some applications, the whole scene may be redrawn. Thus the positions of objects are defined with respect to the grid, and different objects within close proximity may not be directly aware of each other.
A useful software platform for virtual reality applications is GInIt. This has been disclosed; see Shmueli and Elber, [Shmueli O. and Elber G., Managing Data and Interactions in Three Dimensional Environments. Software for Communication Technologies—3rd Austrian-Technion Symposium, Lintz, Austria, April 1999] which is incorporated herein by reference.